package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.EmpSocItemAddDTO;
import org.jsola.hr.dto.EmpSocItemBatchDTO;
import org.jsola.hr.dto.EmpSocItemUpdateDTO;
import org.jsola.hr.query.EmpSocItemQuery;
import org.jsola.hr.vo.EmpSocItemListVO;
import org.jsola.hr.vo.EmpSocItemVO;

import java.util.List;

/**
 * 员工参保信息表子项
 *
 * @author zhr
 */
@Api(tags = "hr-员工参保信息表子项")
public interface IEmpSocItemControllerAPI {

    /**
     * 新增员工参保信息表子项
     * @param empSocItemAddDTO 员工参保信息表子项新增实体
     * @return 员工参保信息表子项展示对象
     */
    @ApiOperation(value = "新增员工参保信息表子项")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empSocItemAddDTO", dataType = "EmpSocItemAddDTO", value = "新增员工参保信息表子项", paramType = "body")
    })
    Result<EmpSocItemVO> save(EmpSocItemAddDTO empSocItemAddDTO);


    /**
     * 修改员工参保信息表子项
     * @param empSocItemUpdateDTO 员工参保信息表子项
     * @return 更新数量
     */
    @ApiOperation(value = "修改员工参保信息表子项")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empSocItemUpdateDTO", dataType = "EmpSocItemUpdateDTO", value = "修改员工参保信息表子项", paramType = "body")
    })
    Result<Integer> update(EmpSocItemUpdateDTO empSocItemUpdateDTO);

    /**
     * 批量编辑、新增、删除员工参保信息表子项
     * @param empSocItemBatchDTO 要操作的员工参保信息表子项
     * @return 操作之后的全部员工参保信息表子项
     */
    @ApiOperation(value = "批量编辑、新增、删除员工参保信息表子项")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empSocItemBatchDTO", dataType = "EmpSocItemBatchDTO", value = "要操作的字段数据", paramType = "body")
    })
    Result batch(EmpSocItemBatchDTO empSocItemBatchDTO);



    /**
     * 删除单个员工参保信息表子项，彻底删除
     * @param empSocItemId 员工参保信息表子项id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个员工参保信息表子项，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empSocItemId", dataType = "String", value = "员工参保信息表子项id", paramType = "path")
    })
    Result<Integer> delete(String empSocItemId);


    /**
     * 批量删除员工参保信息表子项，彻底删除
     * @param empSocItemIds 员工参保信息表子项id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除员工参保信息表子项，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empSocItemIds", dataType = "String[]", value = "员工参保信息表子项id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] empSocItemIds);


    /**
     * 根据员工参保信息表子项id查询员工参保信息表子项详情
     * @param empSocItemId 员工参保信息表子项id
     * @return 员工参保信息表子项详情
     */
    @ApiOperation(value="根据员工参保信息表子项id查询员工参保信息表子项详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empSocItemId", dataType = "String", value = "员工参保信息表子项id", paramType = "path")
    })
    Result<EmpSocItemVO> findById(String empSocItemId);


    /**
     * 查询员工参保信息表子项
     * @param empSocItemQuery 员工参保信息表子项查询参数
     * @return page
     */
    @ApiOperation(value="查询员工参保信息表子项")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empSocItemQuery", dataType = "EmpSocItemQuery", value = "员工参保信息表子项查询参数", paramType = "query")
    })
    Result<List<EmpSocItemListVO>> listAll(EmpSocItemQuery empSocItemQuery);


     /**
     * 分页查询员工参保信息表子项
     * @param empSocItemQuery 员工参保信息表子项查询参数
     * @return page
     */
    @ApiOperation(value="分页查询员工参保信息表子项")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empSocItemQuery", dataType = "EmpSocItemQuery", value = "员工参保信息表子项查询参数", paramType = "query")
    })
    Result<Page<EmpSocItemListVO>> page(EmpSocItemQuery empSocItemQuery);


}

